unit form_nfi; // Incoflex

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  RDprint, StdCtrls, Buttons, ExtCtrls, Db, DBTables;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    RDP: TRDprint;
    ed_obs: TMemo;
    procedure FormActivate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure RDPBeforeNewPage(Sender: TObject; Pagina: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

function Imprime_NICMS(h: THandle; lpar_serie, lpar_notaini, lpar_notafim, lpar_entidade, lpar_dataini, lpar_datafim, lpar_datasaida, lpar_horasaida, lpar_impressa: pchar): boolean; export;

implementation

uses biblio, clsNotaVenda, clsEntidade, Cls_NaturezaOper, clsBackupVenda, clsEndereco, dm,
  clsCidade, clsObsNotaVenda, clsCodFiscal;

var
  fecha, blz: boolean;
  par_serie: string;
  par_notaini: string;
  par_notafim: string;
  par_entidade: string;
  par_datasaida: string;
  par_horasaida: string;
  par_impressa: string;
  par_dataini: tdatetime;
  par_datafim: tdatetime;

{$R *.DFM}

function Imprime_NICMS;
var
  w: integer;
  dataini: string;
  datafim: string;

begin
  blz := false;
  par_serie := '';
  par_notaini := '';
  par_notafim := '';
  par_entidade := '';
  par_datasaida := '';
  par_horasaida := '';
  par_impressa := '';
  dataini := '';
  datafim := '';
  for w := 0 to length(lpar_serie)     - 1 do par_serie     := par_serie     + lpar_serie[w];
  for w := 0 to length(lpar_notaini)   - 1 do par_notaini   := par_notaini   + lpar_notaini[w];
  for w := 0 to length(lpar_notafim)   - 1 do par_notafim   := par_notafim   + lpar_notafim[w];
  for w := 0 to length(lpar_entidade)  - 1 do par_entidade  := par_entidade  + lpar_entidade[w];
  for w := 0 to length(lpar_datasaida) - 1 do par_datasaida := par_datasaida + lpar_datasaida[w];
  for w := 0 to length(lpar_horasaida) - 1 do par_horasaida := par_horasaida + lpar_horasaida[w];
  for w := 0 to length(lpar_impressa)  - 1 do par_impressa  := par_impressa  + lpar_impressa[w];
  for w := 0 to length(lpar_dataini)   - 1 do dataini       := dataini       + lpar_dataini[w];
  for w := 0 to length(lpar_datafim)   - 1 do datafim       := datafim       + lpar_datafim[w];

  par_dataini := StrToDate(dataini);
  par_datafim := StrToDate(datafim);
  fecha := false;
  Application.Handle := h;
  Form1 := TForm1.Create(Application);

  try
    form1.Width := 0;
    form1.Height := 0;
    form1.ShowModal;

  finally
    form1.free;

  end;

  result := blz;

end;

procedure TForm1.FormActivate(Sender: TObject);
var
  nota: TNotaVenda;
  entidade: TEntidade;
  natureza: TNaturezaOper;
  backup: TBackupVenda;
  endereco: TEndereco;
  cidade: TCidade;
  ObsNotaVenda: TObsNotaVenda;
  cod_fiscal: TCodFiscal;
  tq1: TQuery;
  nota1, nota2,
    a5,
    a1, a2, a3, a4,
    wpar_serie,
    wpar_nota,
    wpar_entidade: string;
  linha,
    contador, w: integer;
  imp_nota: boolean;
  texto: atext;
begin
  setlength(texto, 0);
  tq1 := TQuery.create(DmInt);
  tq1.DatabaseName := dmint.db.DatabaseName;
  tq1.active := false;
  tq1.SQL.Clear;
  tq1.Params.Clear;
  if par_impressa = 'S' then begin
    if par_serie <> '' then begin
      if par_notaini + par_notafim <> '' then begin
        if par_entidade <> '' then begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a and b.Bkp_Numero>=:b ' +
              'and b.Bkp_Numero<=:c and b.Ent_Codigo=:d) and (n.Notv_DataFat>=:e and ' +
              'n.Notv_DataFat<=:f) and (b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.params[0].AsString := par_serie;
            tq1.params[1].AsString := StrZero(par_notaini, 9);
            tq1.params[2].AsString := StrZero(par_notafim, 9);
            tq1.params[3].AsString := StrZero(par_entidade, 5);
            tq1.params[4].AsDateTime := par_dataini;
            tq1.params[5].AsDateTime := par_datafim;
          end else begin
            tq1.sql.Add('Select distinct(Bkp_Numero),Nota_Serie,Ent_Codigo from Backup_Venda ' +
              'where Nota_Serie=:a and Bkp_Numero>=:b and Bkp_Numero<=:c ' +
              'and Ent_Codigo=:d ' +
              'order by Nota_Serie,Bkp_Numero,Ent_Codigo');
            tq1.params[0].AsString := par_serie;
            tq1.params[1].AsString := StrZero(par_notaini, 9);
            tq1.params[2].AsString := StrZero(par_notafim, 9);
            tq1.params[3].AsString := StrZero(par_entidade, 5);
          end;
        end else begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a and b.Bkp_Numero>=:b ' +
              'and b.Bkp_Numero<=:c) and (n.Notv_DataFat>=:e and ' +
              'n.Notv_DataFat<=:f) and (b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.params[0].AsString := par_serie;
            tq1.params[1].AsString := StrZero(par_notaini, 9);
            tq1.params[2].AsString := StrZero(par_notafim, 9);
            tq1.params[3].AsDateTime := par_dataini;
            tq1.params[4].AsDateTime := par_datafim;
          end else begin
            tq1.sql.Add('Select distinct(Bkp_Numero),Nota_Serie,Ent_Codigo from Backup_Venda ' +
              'where Nota_Serie=:a and Bkp_Numero>=:b and Bkp_Numero<=:c ' +
              'order by Nota_Serie,Bkp_Numero,Ent_Codigo');
            tq1.params[0].AsString := par_serie;
            tq1.params[1].AsString := StrZero(par_notaini, 9);
            tq1.params[2].AsString := StrZero(par_notafim, 9);
          end;
        end;
      end else begin
        if par_entidade <> '' then begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a and b.Ent_Codigo=:d) ' +
              'and (n.Notv_DataFat>=:e and n.Notv_DataFat<=:f) and ' +
              '(b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.params[0].AsString := par_serie;
            tq1.params[1].AsString := StrZero(par_entidade, 5);
            tq1.params[2].AsDateTime := par_dataini;
            tq1.params[3].AsDateTime := par_datafim;
          end else begin
            tq1.sql.Add('Select distinct(Bkp_Numero),Nota_Serie,Ent_Codigo from Backup_Venda ' +
              'where Nota_Serie=:a and Ent_Codigo=:d ' +
              'order by Nota_Serie,Bkp_Numero,Ent_Codigo');
            tq1.params[0].AsString := par_serie;
            tq1.params[1].AsString := StrZero(par_entidade, 5);
          end;
        end else begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a) and ' +
              '(n.Notv_DataFat>=:e and n.Notv_DataFat<=:f) and ' +
              '(b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.params[0].AsString := par_serie;
            tq1.params[1].AsDateTime := par_dataini;
            tq1.params[2].AsDateTime := par_datafim;
          end else begin
            tq1.sql.Add('Select distinct(Bkp_Numero),Nota_Serie,Ent_Codigo from Backup_Venda ' +
              'where Nota_Serie=:a ' +
              'order by Nota_Serie,Bkp_Numero,Ent_Codigo');
            tq1.params[0].AsString := par_serie;
          end;
        end;
      end;
    end else begin
      if par_notaini + par_notafim <> '' then begin
        if par_entidade <> '' then begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Bkp_Numero>=:b and b.Bkp_Numero<=:c ' +
              'and b.Ent_Codigo=:d) and (n.Notv_DataFat>=:e and ' +
              'n.Notv_DataFat<=:f) and (b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.params[0].AsString := StrZero(par_notaini, 9);
            tq1.params[1].AsString := StrZero(par_notafim, 9);
            tq1.params[2].AsString := StrZero(par_entidade, 5);
            tq1.params[3].AsDateTime := par_dataini;
            tq1.params[4].AsDateTime := par_datafim;
          end else begin
            tq1.sql.Add('Select distinct(Bkp_Numero),Nota_Serie,Ent_Codigo from Backup_Venda ' +
              'where Bkp_Numero>=:b and Bkp_Numero<=:c and Ent_Codigo=:d ' +
              'order by Nota_Serie,Bkp_Numero,Ent_Codigo');
            tq1.params[0].AsString := StrZero(par_notaini, 9);
            tq1.params[1].AsString := StrZero(par_notafim, 9);
            tq1.params[2].AsString := StrZero(par_entidade, 5);
          end;
        end else begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Bkp_Numero>=:b and b.Bkp_Numero<=:c) ' +
              'and (n.Notv_DataFat>=:e and n.Notv_DataFat<=:f) and ' +
              '(b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.params[0].AsString := StrZero(par_notaini, 9);
            tq1.params[1].AsString := StrZero(par_notafim, 9);
            tq1.params[2].AsDateTime := par_dataini;
            tq1.params[3].AsDateTime := par_datafim;
          end else begin
            tq1.sql.Add('Select distinct(Bkp_Numero),Nota_Serie,Ent_Codigo from Backup_Venda ' +
              'where Bkp_Numero>=:b and Bkp_Numero<=:c ' +
              'order by Nota_Serie,Bkp_Numero,Ent_Codigo');
            tq1.params[0].AsString := StrZero(par_notaini, 9);
            tq1.params[1].AsString := StrZero(par_notafim, 9);
          end;
        end;
      end else begin
        if par_entidade <> '' then begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Ent_Codigo=:d) and ' +
              '(n.Notv_DataFat>=:e and n.Notv_DataFat<=:f) and ' +
              '(b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.params[0].AsString := StrZero(par_entidade, 5);
            tq1.params[1].AsDateTime := par_dataini;
            tq1.params[2].AsDateTime := par_datafim;
          end else begin
            tq1.sql.Add('Select distinct(Bkp_Numero),Nota_Serie,Ent_Codigo from Backup_Venda ' +
              'where Ent_Codigo=:d ' +
              'order by Nota_Serie,Bkp_Numero,Ent_Codigo');
            tq1.params[0].AsString := StrZero(par_entidade, 5);
          end;
        end else begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (n.Notv_DataFat>=:e and ' +
              'n.Notv_DataFat<=:f) and (b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.params[0].AsDateTime := par_dataini;
            tq1.params[1].AsDateTime := par_datafim;
          end else begin
            tq1.sql.Add('Select distinct(Bkp_Numero),Nota_Serie,Ent_Codigo from Backup_Venda ' +
              'order by Nota_Serie,Bkp_Numero,Ent_Codigo');
          end;
        end;
      end;
    end;
  end else begin
    if par_serie <> '' then begin
      if par_notaini + par_notafim <> '' then begin
        if par_entidade <> '' then begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a and b.Bkp_Numero>=:b ' +
              'and b.Bkp_Numero<=:c and b.Ent_Codigo=:d) and (n.Notv_DataFat>=:e and ' +
              'n.Notv_DataFat<=:f and n.Imp_NotaFiscal is null) and ' +
              '(b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.params[0].AsString := par_serie;
            tq1.params[1].AsString := StrZero(par_notaini, 9);
            tq1.params[2].AsString := StrZero(par_notafim, 9);
            tq1.params[3].AsString := StrZero(par_entidade, 5);
            tq1.params[4].AsDateTime := par_dataini;
            tq1.params[5].AsDateTime := par_datafim;
          end else begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a and b.Bkp_Numero>=:b ' +
              'and b.Bkp_Numero<=:c and b.Ent_Codigo=:d) and (n.Imp_NotaFiscal is null) ' +
              'and (b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.params[0].AsString := par_serie;
            tq1.params[1].AsString := StrZero(par_notaini, 9);
            tq1.params[2].AsString := StrZero(par_notafim, 9);
            tq1.params[3].AsString := StrZero(par_entidade, 5);
          end;
        end else begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a and b.Bkp_Numero>=:b ' +
              'and b.Bkp_Numero<=:c) and (n.Notv_DataFat>=:e and ' +
              'n.Notv_DataFat<=:f and n.Imp_NotaFiscal is null) and ' +
              '(b.Nota_Numero=n.Nota_Numero) order by b.Nota_Serie,b.Bkp_Numero,' +
              'b.Ent_Codigo');
            tq1.params[0].AsString := par_serie;
            tq1.params[1].AsString := StrZero(par_notaini, 9);
            tq1.params[2].AsString := StrZero(par_notafim, 9);
            tq1.params[3].AsDateTime := par_dataini;
            tq1.params[4].AsDateTime := par_datafim;
          end else begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a and b.Bkp_Numero>=:b ' +
              'and b.Bkp_Numero<=:c) and (n.Imp_NotaFiscal is null) and ' +
              '(b.Nota_Numero=n.Nota_Numero) order by b.Nota_Serie,b.Bkp_Numero,' +
              'b.Ent_Codigo');
            tq1.params[0].AsString := par_serie;
            tq1.params[1].AsString := StrZero(par_notaini, 9);
            tq1.params[2].AsString := StrZero(par_notafim, 9);
          end;
        end;
      end else begin
        if par_entidade <> '' then begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a and b.Ent_Codigo=:d) ' +
              'and (n.Notv_DataFat>=:e and n.Notv_DataFat<=:f and n.Imp_NotaFiscal is ' +
              'null) and (b.Nota_Numero=n.Nota_Numero) order by b.Nota_Serie,' +
              'b.Bkp_Numero,b.Ent_Codigo');
            tq1.params[0].AsString := par_serie;
            tq1.params[1].AsString := StrZero(par_entidade, 5);
            tq1.params[2].AsDateTime := par_dataini;
            tq1.params[3].AsDateTime := par_datafim;
          end else begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a and b.Ent_Codigo=:d) ' +
              'and (n.Imp_NotaFiscal is null) and (b.Nota_Numero=n.Nota_Numero) ' +
              'order by Nota_Serie,Bkp_Numero,Ent_Codigo');
            tq1.params[0].AsString := par_serie;
            tq1.params[1].AsString := StrZero(par_entidade, 5);
          end;
        end else begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a) and ' +
              '(n.Notv_DataFat>=:e and n.Notv_DataFat<=:f and n.Imp_NotaFiscal is null) ' +
              'and (b.Nota_Numero=n.Nota_Numero) order by b.Nota_Serie,' +
              'b.Bkp_Numero,b.Ent_Codigo');
            tq1.params[0].AsString := par_serie;
            tq1.params[1].AsDateTime := par_dataini;
            tq1.params[2].AsDateTime := par_datafim;
          end else begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a) and ' +
              '(n.Imp_NotaFiscal is null) and (b.Nota_Numero=n.Nota_Numero) order ' +
              'by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.params[0].AsString := par_serie;
          end;
        end;
      end;
    end else begin
      if par_notaini + par_notafim <> '' then begin
        if par_entidade <> '' then begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Bkp_Numero>=:b and b.Bkp_Numero<=:c ' +
              'and b.Ent_Codigo=:d) and (n.Notv_DataFat>=:e and ' +
              'n.Notv_DataFat<=:f and n.Imp_NotaFiscal is null) and ' +
              '(b.Nota_Numero=n.Nota_Numero) order by b.Nota_Serie,b.Bkp_Numero,' +
              'b.Ent_Codigo');
            tq1.params[0].AsString := StrZero(par_notaini, 9);
            tq1.params[1].AsString := StrZero(par_notafim, 9);
            tq1.params[2].AsString := StrZero(par_entidade, 5);
            tq1.params[3].AsDateTime := par_dataini;
            tq1.params[4].AsDateTime := par_datafim;
          end else begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Bkp_Numero>=:b and b.Bkp_Numero<=:c ' +
              'and b.Ent_Codigo=:d) and (n.Imp_NotaFiscal is null) and ' +
              '(b.Nota_Numero=n.Nota_Numero) order by b.Nota_Serie,b.Bkp_Numero,' +
              'b.Ent_Codigo');
            tq1.params[0].AsString := StrZero(par_notaini, 9);
            tq1.params[1].AsString := StrZero(par_notafim, 9);
            tq1.params[2].AsString := StrZero(par_entidade, 5);
          end;
        end else begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Bkp_Numero>=:b and b.Bkp_Numero<=:c) ' +
              'and (n.Notv_DataFat>=:e and n.Notv_DataFat<=:f and n.Imp_NotaFiscal is ' +
              'null) and (b.Nota_Numero=n.Nota_Numero) order by b.Nota_Serie,' +
              'b.Bkp_Numero,b.Ent_Codigo');
            tq1.params[0].AsString := StrZero(par_notaini, 9);
            tq1.params[1].AsString := StrZero(par_notafim, 9);
            tq1.params[2].AsDateTime := par_dataini;
            tq1.params[3].AsDateTime := par_datafim;
          end else begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Bkp_Numero>=:b and ' +
              'b.Bkp_Numero<=:c) and (n.Imp_NotaFiscal is null) and ' +
              '(b.Nota_Numero=n.Nota_Numero) order by b.Nota_Serie,b.Bkp_Numero,' +
              'b.Ent_Codigo');
            tq1.params[0].AsString := StrZero(par_notaini, 9);
            tq1.params[1].AsString := StrZero(par_notafim, 9);
          end;
        end;
      end else begin
        if par_entidade <> '' then begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Ent_Codigo=:d) and ' +
              '(n.Notv_DataFat>=:e and n.Notv_DataFat<=:f and n.Imp_NotaFiscal is ' +
              'null) and (b.Nota_Numero=n.Nota_Numero) order by b.Nota_Serie,' +
              'b.Bkp_Numero,b.Ent_Codigo');
            tq1.params[0].AsString := StrZero(par_entidade, 5);
            tq1.params[1].AsDateTime := par_dataini;
            tq1.params[2].AsDateTime := par_datafim;
          end else begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Ent_Codigo=:d) and ' +
              '(n.Imp_NotaFiscal is null) and (b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.params[0].AsString := StrZero(par_entidade, 5);
          end;
        end else begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (n.Notv_DataFat>=:e and ' +
              'n.Notv_DataFat<=:f and n.Imp_NotaFiscal is null) and ' +
              '(b.Nota_Numero=n.Nota_Numero) order by b.Nota_Serie,b.Bkp_Numero,' +
              'b.Ent_Codigo');
            tq1.params[0].AsDateTime := par_dataini;
            tq1.params[1].AsDateTime := par_datafim;
          end else begin
            tq1.sql.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (n.Imp_NotaFiscal is null) and ' +
              '(b.Nota_Numero=n.Nota_Numero) order by Nota_Serie,Bkp_Numero,Ent_Codigo');
          end;
        end;
      end;
    end;
  end;
  tq1.open;
  contador := 1;
  if not(tq1.Eof) then begin
    backup := TBackupVenda.Create;
    nota := TNotaVenda.Create;
    natureza := TNaturezaOper.Create;
    cod_fiscal := TCodFiscal.Create;
    entidade := TEntidade.Create;
    endereco := TEndereco.Create;
    cidade := TCidade.Create;
    ObsNotaVenda := TObsNotaVenda.Create;
    with rdp do begin
      Abrir;
      while not tq1.eof do begin
        if contador > 1 then begin
          rdp.NovaPagina;
        end;

        contador := contador + 1;
        wpar_serie := tq1.fieldbyname('Nota_Serie').asstring;
        wpar_nota := tq1.fieldbyname('Bkp_Numero').asstring;
        wpar_entidade := tq1.fieldbyname('Ent_Codigo').asstring;
        backup.RecuperarNota(wpar_serie, wpar_nota, nota1, nota2);
        imp_nota := true;
        if nota.QRecuperar(wpar_serie, nota1, wpar_entidade) = 0 then begin
          imp_nota := false;
        end;

        blz := imp_nota;
        if imp_nota then begin
          natureza.Recuperar(nota.Codf_codigo, nota.Nato_codigo);

          impf(02, 73, wpar_nota, [negrito, comp17]);

          cod_fiscal.Recuperar(nota.Codf_codigo);

          if cod_fiscal.CodF_Tipo = 'S' then begin
            impf(03, 52, 'X', [negrito]);
          end else begin
            impf(03, 59, 'X', [negrito]);
          end;

          impf(07, 01, ' ' + copy(natureza.Nato_Descricao, 1, 27), [comp17]);
          impf(07, 29, nota.Codf_codigo, [comp17]);
          entidade.Recuperar(wpar_entidade);
          impf(10, 01, ' ' + copy(entidade.Ent_Nome, 1, 45) + ' - ' + wpar_entidade, [comp17]);

          if entidade.Ent_Cnpj <> '' then begin
            a1 := copy(entidade.Ent_Cnpj, 1, 2);
            a2 := copy(entidade.Ent_Cnpj, 3, 3);
            a3 := copy(entidade.Ent_Cnpj, 6, 3);
            a4 := copy(entidade.Ent_Cnpj, 9, 4);
            a5 := copy(entidade.Ent_Cnpj, 13, 2);
            impf(10, 53, a1 + '.' + a2 + '.' + a3 + '/' + a4 + '-' + a5, [comp17]);
          end else begin
            impf(10, 53, entidade.Ent_Cpf, [comp17]);
          end;

          if nota.Notv_datafat <> 0 then begin
            impf(10, 74, ' ' + datetostr(nota.Notv_datafat), [comp17]);
          end;

          endereco.Recuperar_Endereco(wpar_entidade, '01');
          impf(12, 01, ' ' + endereco.End_Endereco, [comp17]);
          impf(12, 42, endereco.End_bairro, [comp17]);
          impf(12, 60, endereco.End_Cep, [comp17]);
          impf(12, 74, ' ' + par_datasaida, [comp17]);
          cidade.Recuperar(endereco.Cid_Codigo);
          impf(14, 01, ' ' + copy(cidade.Cid_Nome, 1, 39), [comp17]);
          impf(14, 32, '(' + cidade.Cid_ddd + ') ' + endereco.End_Fone, [comp17]);
          impf(14, 49, cidade.Cid_est_sigla, [comp17]);
          impf(14, 52, entidade.Ent_Inscest, [comp17]);
          impf(14, 74, '  ' + par_horasaida, [comp17]);

          linha := 23;
          impf(linha, 02, ' Ref. Nota(s) Fiscal(s) No(s):', [comp17]);
          inc(linha);
          ObsNotaVenda.Recuperar(nota1, nota2, wpar_serie, wpar_entidade);
          ed_obs.text := ObsNotaVenda.ObsNotv_6;

          for w := 0 to ed_obs.Lines.Count - 1 do begin
            impf(linha, 02, ' ' + ed_obs.Lines.Strings[w], [comp17]);
            inc(linha);
          end;

          impf(41, 05, format_valor(nota.Notv_bcalicms), [comp17]);
          impf(41, 18, format_valor(nota.Notv_icms), [comp17]);
          impf(41, 37, '             -', [comp17]);
          impf(41, 56, '             -', [comp17]);
          impf(41, 73, '             -', [comp17]);
          impf(43, 05, '             -', [comp17]);
          impf(43, 18, '             -', [comp17]);
          impf(43, 37, '             -', [comp17]);
          impf(43, 56, '             -', [comp17]);
          impf(43, 73, '             -', [comp17]);

          impf(50, 36, wpar_nota, [comp17]);
          impf(63, 04, wpar_nota, [negrito, comp17]);

        end;

        tq1.next;

      end;

      Setup;
      Fechar;

    end;

    backup.free;
    nota.free;
    natureza.free;
    cod_fiscal.free;
    entidade.free;
    endereco.free;
    cidade.free;
    ObsNotaVenda.free;

  end;

  tq1.close;
  tq1.free;
  fecha := true;
  Timer1.Interval := 1;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if fecha then begin
    //Application.Terminate;
    Close;
  end;
end;

procedure TForm1.RDPBeforeNewPage(Sender: TObject; Pagina: Integer);
begin
  if rdp.Impressora = Epson then begin
    rdp.acentuacao := SemAcento
  end else begin
    rdp.acentuacao := Transliterate;
  end;

end;

initialization
  begin
    dmint := TDmint.Create(application);
  end;

finalization
  begin
    dmint.free;
  end;

end.

